package com.zw.design.pattern.creational.simplefactory;

/****
 * 简单工厂
 */
public class VideoFactory {
    /****
     * 简单工厂方法 不满足开闭原则
     * @param type
     * @return
     */
    public Video getVideo(String type){
        if ("go".equalsIgnoreCase(type)){
            return new GoVideo();
        }else if ("java".equalsIgnoreCase(type)){
            return new JavaVideo();
        }
        return null;
    }

    /****
     * 简单工厂方法 使用反射技术
     * @param c
     * @return
     */
    public Video getVideo(Class c){
        Video video=null;
        try {
            //使用反射技术创建对象
           video= (Video) Class.forName(c.getName()).newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return video;
    }

}
